"""
展开嵌套的序列

问题：
    你想将一个多层嵌套的序列展开成一个单层列表。
解决方案：
    可以写一个包含yield from语句的递归生成器来轻松解决这个问题。
"""

from collections import Iterable


def flatten(items, ignore_types=(str, bytes)):
    for x in items:
        if isinstance(x, Iterable) and not isinstance(x, ignore_types):
            yield from flatten(x)
        else:
            yield x


def use_flatten():
    user_ids = [1, 3, [6, 5], 9]
    for user_id in flatten(user_ids):
        print(user_id)
    # 输出结果：
    """
    1
    3
    6
    5
    9
    """


if __name__ == '__main__':
    use_flatten()
